﻿using Topshelf;

namespace WindowsTopshelfService45
{
    internal class Program
    {
        static void Main(string[] args)
        {
            //安装
            //WindowsTopshelfService45.exe install 

            //卸载
            //WindowsTopshelfService45.exe uninstall

            /*
            WindowsTopshelfService45.exe install   # 安装服务
            WindowsTopshelfService45.exe uninstall # 卸载服务
            WindowsTopshelfService45.exe start     # 启动服务
            WindowsTopshelfService45.exe stop      # 停止服务
            WindowsTopshelfService45.exe help      # 查看帮助
            WindowsTopshelfService45.exe run       # 以控制台模式运行，便于调试
             */

            // 配置和运行宿主服务
            HostFactory.Run(x =>
            {
                x.Service<MyWorker>(s =>
                {
                    // 指定服务类型。这里设置为 Service
                    s.ConstructUsing(name => new MyWorker());

                    // 当服务启动后执行什么
                    s.WhenStarted(tc => tc.Start());

                    // 当服务停止后执行什么
                    s.WhenStopped(tc => tc.Stop());
                });

                // 服务用本地系统账号来运行
                x.RunAsLocalSystem();

                // 服务描述信息
                x.SetDescription("我的项目服务");
                // 服务显示名称
                x.SetDisplayName("MyProjectServiceShowName");
                // 服务名称
                x.SetServiceName("MyProjectService");

                // 设置为自动启动
                x.StartAutomatically();
                // 设置为手动启动
                // x.StartManually();
            });
        }
    }
}
